import { getToken } from '@/utils'
// import { get } from '@/utils/request'
import store from '@/store'
const REQUEST_TIME_OUT = 30 // 等待框出现时间(S)
const SHOW_LOADING_TIME = 1.5 // 等待框出现时间(S)
// 初始化请求配置
uni.$u.http.setConfig((config: any) => {
  /* config 为默认全局配置 */
  config.baseURL = import.meta.env.VITE_BASE_API /* 根域名 */
  config.timeout = REQUEST_TIME_OUT * 1000 /* 超时时间 */
  config.getTask = (task: any, options: any) => {
    setTimeout(() => {
      task.abort()
      store.commit('request/REMOVE_TIMER')
    }, REQUEST_TIME_OUT * 1000)
  }
  return config
})
// 请求拦截
uni.$u.http.interceptors.request.use(
  (config: any) => {
    store.commit('request/SET_TIMER', SHOW_LOADING_TIME)

    config.data = config.data || {}

    config.header.Authorization = getToken() || ''
    config.header['Access-Control-Allow-Origin'] = '*'
    return config
  },
  (config: any) => {
    // 可使用async await 做异步操作
    return Promise.reject(config)
  }
)

// 响应拦截
uni.$u.http.interceptors.response.use(
  async (response: any) => {
    store.commit('request/REMOVE_TIMER')
    /* 对响应成功做点什么 可使用async await 做异步操作 */
    const data = response.data
    // 自定义参数
    const custom = response.config?.custom
    if (data.code !== 200) {
      // 如果没有显式定义custom的toast参数为false的话，默认对报错进行toast弹出提示
      // if (custom.toast !== false) uni.$u.toast(data.msg)
      // if (data.code >= 600) {
      //   clearStorageSync()
      //   setTimeout(() => uni.reLaunch({ url: '/pages/user/user' }), 800)
      // }
    }
    return data
  },
  (response: object) => {
    // 对响应错误做点什么 （statusCode !== 200）
    return Promise.reject(response)
  }
)
export default uni.$u.http
